/*
 * IPCUids.cpp
 *
 *  Created on: 09/12/2013
 *      Author: gonzalo
 */

#include "IPCUids.h"
#include "ArchivoCSV.h"
#include "../common/Exception.h"

using namespace std;

const string IPCUids::FILE_PATH = "resource/FixedUids.csv";

IPCUids::IPCUids()
{
}

Uid IPCUids::getUid(string file, char key) {
	ArchivoCSV arch(FILE_PATH, ';');
	string skey("");
	skey += key;
	vector<string> row = arch.getRowByFields("file",file,"key",skey);
	if (row.empty())
		throw Exception("IPCUids::getUid: No hubo fila que con file "+ file + "y key " + key);

	int pos = arch.getColByName("uuid");

	if (pos < 0)
		throw Exception("IPCUids::getUid no se encontro columna uuid");

	return row[pos];
}


string IPCUids::getFile(Uid uid,bool alt){//alt es para ver si quiero los valores Alternativos o no
	ArchivoCSV arch(FILE_PATH, ';');
	vector<string> row = arch.getRowByField("uuid", uid);
	if (row.empty())
		throw Exception("IPCUids::getFile: El Uid "+ uid + " no fue encontrado");

	int pos = (alt)? arch.getColByName("altFile") :  arch.getColByName("file");

	if (pos < 0)
		throw Exception("IPCUids::getFile no se encontro la columna file o altFile");

	return row[pos];
}

char IPCUids::getKey(Uid uid) { //alt es para ver si quiero los valores Alternativos o no
	ArchivoCSV arch(FILE_PATH, ';');
	vector<string> row = arch.getRowByField("uuid", uid);
	if (row.empty())
		throw Exception("IPCUids::getFile: El Uid "+ uid + " no fue encontrado");

	int pos = arch.getColByName("key");
	if (pos < 0)
		throw Exception("IPCUids::getKey: no se encontro la columna key");

	return row[pos][0];
}

IPCUids::~IPCUids() {

}
